;Practica IAIC 
;Ignacio Arroyo G�mez, Luis Alberto Inga Rivera, Luis Villacastin Candil
;4�C
;Grupo 10

;TEXTO DE INTRODUCCION ----------------------------------------
 




; Regla 0 ----------------------------------------------------

(defglobal ?*file* = ( new java.io.OutputStreamWriter ( new java.io.FileOutputStream "C://salida.txt" ) ) )
(defglobal ?*writer* = ( new java.io.BufferedWriter ?*file* ) )

 (call ?*writer* write "Incluya sus datos personales junto con una foto actual")


(defrule resumen
(and(exp si)(idioma si)(informatica si))
       =>
       (call ?*writer* write "Enhorabuena, tiene usted mucha informacion valiosa que añadir al cv" )
       (call ?*writer* newLine)
       (call ?*writer* write "trate de resumirla en una hoja, que quede espaciosa, y adecue su informacion al puesto al que opta" )
       (call ?*writer* newLine)
       (retract-string "(informatica si)"))


(defrule tieneMovilidad (and(idioma si)(disponibilidad si))
       =>
      (call ?*writer* write "La movilidad en un trabajador es un factor fundamental en el modelo de " )
      (call ?*writer* newLine)
      (call ?*writer* write "empresa actual. Además gana muchos puntos gracias a su conocimiento y nivel" )
      (call ?*writer* newLine)
      (retract-string "(disponibilidad si)"))

(defrule noEstudios_noExp
	(and
	(exp no)
	(nivel 0))	
	=>
	(call ?*writer* write  "Bueno, todo el mundo tiene su primera vez, te recomiendo lo siguiente: Deberias ir a la escuela de adultos y elegir algun curso que te guste, para as� tener algo de conocimientos y/o experiencia.")
(retract-string "(exp no)")
(retract-string "(nivel 0)")(call ?*writer* newLine)
)

(defrule noEstudios_siExp (and(exp si)(nivel 0))=>
(call ?*writer* write  "Debes poner en tu CV toda esa experiencia y buscar alg�n curso para trabajadores y asi tener algun estudio. Te recomiendo sacarte el graduado escolar cuanto antes, es lo minimo, ahora es mas facil que nunca.")
(retract-string "(exp si)")
(retract-string "(nivel 0)")
(call ?*writer* newLine))



(defrule secundaria_noExp(and(exp no)(nivel 1))=>
(call ?*writer* write  "Pon esos estudios en tu CV ordenados por fecha, si te apetece aprender m�s, te sugiero un bachillerato o una FP si quieres tambi�n trabajar despues de estudiar.")
(retract-string "(exp no)")
(retract-string "(nivel 1)")
(call ?*writer* newLine))

(defrule secundaria_siExp(and(exp si)(nivel 1))=>
(call ?*writer* write  "Pon esos estudios en tu CV ordenados por fecha, si te apetece aprender m�s, te sugiero un bachillerato o una FP. Si has trabajado en varios sitios, tienes que poner mas enfasis en esa experiencia. Poniendo la experiencia primero y luego tu titulo de secundaria.")
(retract-string "(exp si)")
(retract-string "(nivel 1)")
(call ?*writer* newLine))





(defrule bachiller_noExp (and(nivel 2)(exp no))=>
(call ?*writer* write  "Es normal no tener experiencia profesional si has hecho un bachillerato, Resalta tu titulo en el CV, te recomiendo hacer una FP de grado superior o si te atreves con una carrera universitaria, adelante !!")
(retract-string "(exp no)")
(retract-string "(nivel 2)")
(call ?*writer* newLine))


(defrule bachiller_siExp(and(exp si)(nivel 2))=>
(call ?*writer* write  "Dado que tu nivel de estudios es bastante alto, te recomiendo poner primero el apartado de Conocimientos y luego tu experiencia profesional.")
(retract-string "(exp si)")
(retract-string "(nivel 2)"))



(defrule FP_noExp (and(nivel 3)(exp no))=>
(call ?*writer* write  "Viniendo de una FP seguro que has realizado practicas en alguna empresa relacionada con un formacion, te recomiendo que despues del apartado de Nivel de Estudios, pongas esa experiencia.")
(retract-string "(exp no)")
(retract-string "(nivel 3)"))


(defrule FP_siExp (and(nivel 3)(exp si))=>
(call ?*writer* write  "Viniendo de una FP seguro que has realizado practicas en alguna empresa relacionada con un formacion, te recomiendo que despues del apartado de Nivel de Estudios, pongas esa experiencia y despues pon tu experiencia profesional que tienes despues de haber realizado esas practicas hasta ahora." )
(retract-string "(exp si)")
(retract-string "(nivel 3)")
)


(defrule universitario_noExp (and(nivel 4)(exp no))=>
(call ?*writer* write  "Es normal que no tengas experiencia despues de haber cursado una carrera. Como primer empleo te recomiendo un puesto de becario en practicas, ya que no tendras responsabilidades y aprenderas mucho. Pregunta en tu facultad o escuela. Si quieres seguir estudiando mira algun Master.")
(retract-string "(exp no)")
(retract-string "(nivel 4)")
(call ?*writer* newLine)
)

(defrule universitario_siExp (and(nivel 4)(exp si))=>
(call ?*writer* write  "Tienes un buen perfil, con estudios y experiencia. Te recomiendo poner primero tu Nivel de estudios seguido de tu experiencia laboral, no olvides poner tambien si realizaste alguna pr�ctica de formacion." )
(retract-string "(exp si)")
(retract-string "(nivel 4)")
(call ?*writer* newLine))


(defrule idioma1 (idioma no)=>
(call ?*writer* write  "Bueno, nunca es tarde para aprender algun idioma o mejorar lo que sepas. A parte de lo que te dije antes, si te apetece te recomiendo que te apuntes a algun curso de ingles o de algun idioma extranjero para asi resaltar en tu CV.")
(retract-string "(idioma no)")
(call ?*writer* newLine)
)

(defrule idioma2 (idioma si)=>
(call ?*writer* write  "Aprovecha tu conocimiento de idiomas para rellenar mas cosas en tu CV, esta muy valorado que sepas un idioma !!, ponlo justo debajo de tu nivel de estudios. Y no olvides poner al lado el nivel que tienes!!" )
(retract-string "(idioma si)")
(call ?*writer* newLine)
(call ?*writer* write "Tener conocimiento de otras lenguas le facilitará el ingreso las" )
(call ?*writer* newLine)
(call ?*writer* write "empresas ya que estas solicitan cada vez más los idiomas a sus empleados" )
(call ?*writer* newLine)
(call ?*writer* write "para abrirse al mercado internacional" )
(call ?*writer* newLine)
)



(defrule carne1 (carnet no)=>
(call ?*writer* write  "Bueno, el carnet es lo menos importante de tu CV, pero aun asi te ayudar mucho, porque muchas empresas requieren que algun trabajador pueda conducir.")
(retract-string "(carnet no)")
(call ?*writer* newLine)
)

(defrule carne1 (carnet si)=>
(call ?*writer* write  "Aunque sea lo menos importante el carnet, si lo tienes te recomiendo que lo pongas, siempre es bueno saber si un candidato puede conducir, algunas empresas les interesa esto, y si pones los anioos que llevas mejor que mejor.")
(retract-string "(carnet si)")
(call ?*writer* newLine)
)


;Nuevas reglas incorporadas del grupo 14


(defrule tipoCronologico
    (funcional n)
    =>(call ?*writer* write "Entonces le aconsejamos que redacte un curriculum de tipo cronológico inverso" )
    (call ?*writer* newLine)
    (call ?*writer* write " para resaltar sus experiencias mas recientes y poner de relieve su progresión profesional" )
    (call ?*writer* newLine)
	(call ?*writer* write "Introduzca una entrada en su cv por cada una de las empresas para las que ha trabajado" )
    (call ?*writer* newLine)
    (retract-string "(funcional n)"))


(defrule tipoFuncional
   (and (funcional s)(exp si))
    =>
    (call ?*writer* write "Entonces es aconsajable que redacte usted un curriculum de tipo funcional" )
    (call ?*writer* newLine)
    (call ?*writer* write"que permitirá resaltar los puntos positivos y omitir los eventuales errores de recorrido" )
    (retract-string "(funcional s)"))




(defrule incomunicadoMail
    (tieneMail no)
    =>
    (call ?*writer* write "Por favor cree una cuenta de correo electronico, le facilitara la comunicacion con la empresa")
    (call ?*writer* newLine)
    (retract-string "(tieneMail no)"))

(defrule incomunicadoTlf
    (tieneTelf no)
    =>
    (call ?*writer* write "Necesita usted un telefono para que la empresa pueda comunicarle el resultado del proceso de seleccion")
    (call ?*writer* newLine)
    (retract-string "(tieneTelf no)"))

(defrule otrostrabajossi
    (otrotrab s)
    =>
    (call ?*writer* write "Indique dichos trabajos en el apartado Otros datos de interes")
    (call ?*writer* newLine)
    (call ?*writer* write "esto indicará que es usted una persona con iniciativa")
    (call ?*writer* newLine)
    (retract-string "(otrotrab s)"))

(defrule sinInformatica(informatica no)
       =>
       (call ?*writer* write "En la empresa actual es NECESARIO tener conocimientos informáticos" )
       (call ?*writer* newLine)
       (call ?*writer* write "no ha de ser un experto, pero si ha de desenvolverse fluidamente con un" )
       (call ?*writer* newLine)
       (call ?*writer* write "ordenador asi como navegar por Internet. Le recomendamos que se apunte a un")
       (call ?*writer* newLine)
       (call ?*writer* write "curso para por lo menos aprender lo básico. " )
       (call ?*writer* newLine)
       (retract-string "(informatica no)"))




(run)
(call ?*writer* close)
